package com.wgh.product.converter;

import com.wgh.product.dto.ProductSkuAttributeDTO;
import com.wgh.product.entity.shop.ProductSkuAttribute;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * SKU属性关联转换器
 * 用于ProductSkuAttribute实体和ProductSkuAttributeDTO之间的转换
 */
@Component
public class ProductSkuAttributeConverter {

    /**
     * 将ProductSkuAttribute实体转换为ProductSkuAttributeDTO
     * @param productSkuAttribute SKU属性关联实体
     * @return SKU属性关联DTO
     */
    public ProductSkuAttributeDTO toDTO(ProductSkuAttribute productSkuAttribute) {
        if (productSkuAttribute == null) {
            return null;
        }
        
        ProductSkuAttributeDTO productSkuAttributeDTO = new ProductSkuAttributeDTO();
        productSkuAttributeDTO.setId(productSkuAttribute.getId());
        productSkuAttributeDTO.setSkuId(productSkuAttribute.getSkuId());
        productSkuAttributeDTO.setAttributeId(productSkuAttribute.getAttributeId());
        productSkuAttributeDTO.setAttributeValueId(productSkuAttribute.getAttributeValueId());
        productSkuAttributeDTO.setAttributeName(productSkuAttribute.getAttributeName());
        productSkuAttributeDTO.setAttributeValueName(productSkuAttribute.getAttributeValueName());
        productSkuAttributeDTO.setCreateTime(productSkuAttribute.getCreateTime());
        productSkuAttributeDTO.setUpdateTime(productSkuAttribute.getUpdateTime());
        
        return productSkuAttributeDTO;
    }

    /**
     * 将ProductSkuAttributeDTO转换为ProductSkuAttribute实体
     * @param productSkuAttributeDTO SKU属性关联DTO
     * @return SKU属性关联实体
     */
    public ProductSkuAttribute toEntity(ProductSkuAttributeDTO productSkuAttributeDTO) {
        if (productSkuAttributeDTO == null) {
            return null;
        }
        
        ProductSkuAttribute productSkuAttribute = new ProductSkuAttribute();
        productSkuAttribute.setId(productSkuAttributeDTO.getId());
        productSkuAttribute.setSkuId(productSkuAttributeDTO.getSkuId());
        productSkuAttribute.setAttributeId(productSkuAttributeDTO.getAttributeId());
        productSkuAttribute.setAttributeValueId(productSkuAttributeDTO.getAttributeValueId());
        productSkuAttribute.setAttributeName(productSkuAttributeDTO.getAttributeName());
        productSkuAttribute.setAttributeValueName(productSkuAttributeDTO.getAttributeValueName());
        productSkuAttribute.setCreateTime(productSkuAttributeDTO.getCreateTime());
        productSkuAttribute.setUpdateTime(productSkuAttributeDTO.getUpdateTime());
        
        return productSkuAttribute;
    }

    /**
     * 将ProductSkuAttribute实体列表转换为ProductSkuAttributeDTO列表
     * @param productSkuAttributes SKU属性关联实体列表
     * @return SKU属性关联DTO列表
     */
    public List<ProductSkuAttributeDTO> toDTOList(List<ProductSkuAttribute> productSkuAttributes) {
        if (productSkuAttributes == null || productSkuAttributes.isEmpty()) {
            return new ArrayList<>();
        }
        
        List<ProductSkuAttributeDTO> productSkuAttributeDTOs = new ArrayList<>();
        for (ProductSkuAttribute productSkuAttribute : productSkuAttributes) {
            productSkuAttributeDTOs.add(toDTO(productSkuAttribute));
        }
        
        return productSkuAttributeDTOs;
    }

    /**
     * 将ProductSkuAttributeDTO列表转换为ProductSkuAttribute实体列表
     * @param productSkuAttributeDTOs SKU属性关联DTO列表
     * @return SKU属性关联实体列表
     */
    public List<ProductSkuAttribute> toEntityList(List<ProductSkuAttributeDTO> productSkuAttributeDTOs) {
        if (productSkuAttributeDTOs == null || productSkuAttributeDTOs.isEmpty()) {
            return new ArrayList<>();
        }
        
        List<ProductSkuAttribute> productSkuAttributes = new ArrayList<>();
        for (ProductSkuAttributeDTO productSkuAttributeDTO : productSkuAttributeDTOs) {
            productSkuAttributes.add(toEntity(productSkuAttributeDTO));
        }
        
        return productSkuAttributes;
    }
}